package com.xuecheng.base.model;

import com.baomidou.mybatisplus.core.metadata.OrderItem;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

/**
 * @author Mr.M
 * @version 1.0
 * @description 分页查询分页参数
 * @date 2023/2/11 15:33
 */
@Data
@ToString
public class PageParams {

    //当前页码
    @ApiModelProperty("页码")
    private Long pageNo = 1L;
    //每页显示记录数
    @ApiModelProperty("每页记录数")
    private Long pageSize = 30L;

    @ApiModelProperty("排序字段")
    private String sortBy;

    @ApiModelProperty("是否升序")
    private Boolean isAsc=true;


    public<T> Page<T> toMpPage(OrderItem items){
        //1.1分页条件
        Page<T> page = Page.of(pageNo, pageSize);
        //1.2排序条件
        if (sortBy!=null){
            //不为空
            page.addOrder(new OrderItem(sortBy,isAsc));
        }else if (items!=null){
            //为空，默认按照更新时间排序
//            page.addOrder(new OrderItem("update_time",false));
            page.addOrder(items);
        }

        return page;

    }


    //调用者连对象都不想new的话就调用这个方法，但是只能有一个排序条件
    public<T> Page<T> toMpPage(String defaultSortBy,Boolean defaultAsc){
        return toMpPage(new OrderItem(defaultSortBy,defaultAsc));
    }

    public<T> Page<T> toMpPageDefaultSortByCreateTime(OrderItem...items) {
        return toMpPage(new OrderItem("create_date",false));
    }
    public<T> Page<T> toMpPageDefaultSortByUpdateTime(OrderItem...items) {
        return toMpPage(new OrderItem("change_date",false));
    }
}
